##### 23.3.3.18 Symbol table representation in Guile.

Access to symbol table data maintained by gdb on the inferior is exposed to Guile via two objects: `<gdb:sal>` (symtab-and-line) and `<gdb:symtab>`. Symbol table and line data for a frame is returned from the `frame-find-sal` `<gdb:frame>` procedure. See Frames In Guile.

For more information on gdb's symbol table management, see Examining the Symbol Table.

The following symtab-related procedures are provided by the `(gdb)` module:

— Scheme Procedure: symtab? object

> Return `#t` if object is an object of type `<gdb:symtab>`. Otherwise return `#f`.

— Scheme Procedure: symtab-valid? symtab

> Return `#t` if the `<gdb:symtab>` object is valid, `#f` if not. A `<gdb:symtab>` object becomes invalid when the symbol table it refers to no longer exists in gdb. All other `<gdb:symtab>` procedures will throw an exception if it is invalid at the time the procedure is called.

— Scheme Procedure: symtab-filename symtab

> Return the symbol table's source filename.

— Scheme Procedure: symtab-fullname symtab

> Return the symbol table's source absolute file name.

— Scheme Procedure: symtab-objfile symtab

> Return the symbol table's backing object file. See Objfiles In Guile.

— Scheme Procedure: symtab-global-block symtab

> Return the global block of the underlying symbol table. See Blocks In Guile.

— Scheme Procedure: symtab-static-block symtab

> Return the static block of the underlying symbol table. See Blocks In Guile.

The following symtab-and-line-related procedures are provided by the `(gdb)` module:

— Scheme Procedure: sal? object

> Return `#t` if object is an object of type `<gdb:sal>`. Otherwise return `#f`.

— Scheme Procedure: sal-valid? sal

> Return `#t` if sal is valid, `#f` if not. A `<gdb:sal>` object becomes invalid when the Symbol table object it refers to no longer exists in gdb. All other `<gdb:sal>` procedures will throw an exception if it is invalid at the time the procedure is called.

— Scheme Procedure: sal-symtab sal

> Return the symbol table object (`<gdb:symtab>`) for sal.

— Scheme Procedure: sal-line sal

> Return the line number for sal.

— Scheme Procedure: sal-pc sal

> Return the start of the address range occupied by code for sal.

— Scheme Procedure: sal-last sal

> Return the end of the address range occupied by code for sal.

— Scheme Procedure: find-pc-line pc

> Return the `<gdb:sal>` object corresponding to the pc value. If an invalid value of pc is passed as an argument, then the `symtab` and `line` attributes of the returned `<gdb:sal>` object will be `#f` and 0 respectively.